Fix > 100 percent
authorJeroen van der Heijden <jeroen@transceptor.technology>
Thu, 17 May 2018 11:28:09 +0000 (13:28 +0200)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Thu, 17 May 2018 11:28:09 +0000 (13:28 +0200)
ChangeLog-2.0.27
src/siri/db/db.c
test/test_server.py

index ba7d8dfbf2678727dd49f1b821da42964ccf0f88..594463d283c762a899b6d2c803c4269eff6055b4 100644 (file)
   * Allow all (*) for selecting series. Keyword 'all' replaces 'points' which
     is now a deprecated keyword.
 
-  * Solved compiler warnings. (issue #96)
\ No newline at end of file
+  * Solved compiler warnings. (issue #96)
+  
+  * Added the following server statistics properties:
+    - active_tasks: returns the number of active tasks for the current database
+    - idle_time: returns the seconds the database was idle since uptime.
+    - idle_percentage: returns the percentage of idle time since uptime.  
+    (Note: idle mean no active tasks for the current database) 
+    
\ No newline at end of file
index f47fe8e37859aff0886a78c797afcd43d9b86571..ee5234b6b33e2b3d4aaa0055589a873d11ffa1c8 100644 (file)
@@ -75,9 +75,13 @@ int32_t siridb_get_uptime(siridb_t * siridb)
 int8_t siridb_get_idle_percentage(siridb_t * siridb)
 {
     double uptime = (double) siridb_get_uptime(siridb);
-    return (uptime)
+    int8_t idle = (uptime)
             ? (int8_t) round(siridb->tasks.idle_time / uptime * 100.0f)
             : 0;
+    /* idle time can technically be larger since we start a database before we
+     * mark the server as started.
+     */
+    return (idle > 100) ? 100 : idle;
 }
 
 
index e5435c42afb9ceda42e5ed5fffee48791c044d9f..31fff49348dcc3796cdb63d7fc1678b1fc5a4c1e 100644 (file)
@@ -61,7 +61,7 @@ class TestServer(TestBase):
         result = await self.client1.query('list servers log_level')
         self.assertEqual(result.pop('servers'), [['info'], ['info']])
 
-        result = await self.client1.query('list servers active_tasks where active_tasks >= 0 and idle_time >= 0 and idle_percentage <= 100')
+        result = await self.client1.query('list servers active_tasks where active_tasks == 1 and idle_time >= 0 and idle_percentage <= 100')
         self.assertEqual(result.pop('servers'), [[1], [1]])
 
         result = await self.client0.query('alter servers where active_handles > 1 set log_level debug')